package main

import (
	"fmt"
	"os"
)

var (
	allStudent map[int64]*student
)

type student struct {
	id   int64
	name string
}

// newStudent 是student的构造方法
func newStudent(id int64, name string) *student {
	return &student{
		id:   id,
		name: name,
	}
}

func showAllStudent() {
	for k, v := range allStudent {
		fmt.Printf("学号：%d 姓名：%s\n", k, v.name)
	}
}
func addStudent() {
	var (
		id   int64
		name string
	)
	fmt.Println("请输入学生学号")
	fmt.Scanln(&id)
	fmt.Println("请输入学生姓名")
	fmt.Scanln(&name)

	newstuden := newStudent(id, name)
	allStudent[id] = newstuden

}
func deleteStudent() {
	var (
		delId int64
	)
	fmt.Println("请输入学生学号")
	fmt.Scanln(&delId)
	delete(allStudent, delId)
}

func main() {
	allStudent = make(map[int64]*student, 48) //初始化 并开辟内存空间
	for {
		// 打印菜单
		fmt.Println("欢迎光临学生管理系统")
		fmt.Println(`
		1.查看学生
		2.新增学生
		3.删除学生
		`)
		fmt.Println("请输入你要干什么")
		var choice int
		fmt.Scanln(&choice)
		fmt.Printf("你选择了%d这个选项\n", choice)
		//执行对应的函数
		switch choice {
		case 1:
			showAllStudent()
		case 2:
			addStudent()
		case 3:
			deleteStudent()
		case 4:
			os.Exit(1)
		default:
			fmt.Println("滚。。。")
		}

	}

}
